<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
  <head>
    {{ partial "head.html" . }}
  </head>
  <body class="td-{{ .Kind }}">
    <header>
      {{ partial "navbar.html" . }}
    </header>
    
      <main role="main" class="td-main">
        <section class="of-masthead of-masthead--home">
          <h1 class="of-heading of-masthead--home__title"><span>Operator</span><span>SDK</span></h1>
          <h2 class="of-heading of-heading--md of-masthead--home__content">The Operator SDK makes it easier to build Kubernetes native applications, a process that can require deep, application-specific operational knowledge.</h2>
          <a href="/build" class="of-button of-button--primary of-masthead--home__action1">Build an Operator</a>
          <!-- <a href="#" class="of-button of-button--secondary of-masthead--home__action2" aria-label="how can I build an operator">How can I build one?</a> -->
        </section>
        
          <section class="of-section-page-intro ">
            <header class="of-section-page-intro__header">
              <h2 class="of-heading of-heading--md">WHAT IS OPERATOR SDK?</h2>
            <p>This project is a component of the <a href="https://github.com/operator-framework">Operator Framework</a>, an open source toolkit to manage Kubernetes native applications, called Operators, in an effective, automated, and scalable way.</p>
            </header>
          </section>
          <section class="of-section of-section-whats-operator of-section-separator">
            <aside class="of-section-whats-operator__video"></aside> 
           <div class="of-section-whats-operator__content">
            <h2 class="of-heading of-heading--md">WHAT CAN I DO WITH OPERATOR SDK?</h2>
            <p>The Operator SDK provides the tools to build, test, and package Operators. Initially, the SDK facilitates the marriage of an application’s business logic (for example, how to scale, upgrade, or backup) with the Kubernetes API to execute those operations. Over time, the SDK can allow engineers to make applications smarter and have the user experience of cloud services. Leading practices and code patterns that are shared across Operators are included in the SDK to help prevent reinventing the wheel.</p>
        <p>The Operator SDK is a framework that uses the controller-runtime library to make writing operators easier by providing:</p>
        <ul class="of-list">
          <li>High level APIs and abstractions to write the operational logic more intuitively</li>
          <li>Tools for scaffolding and code generation to bootstrap a new project fast</li>
          <li>Extensions to cover common Operator use cases</li>
        </ul>    
        <a href="/build" class="of-button of-button--tertiary">
              Build an Operator
              <svg class="of-button__icon" enable-background="new 0 0 22 22" version="1.1" viewBox="0 0 22 22" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
                <path d="M19.5,8l-7.3-7.6c-0.4-0.4-1.1-0.4-1.5,0L9.3,1.8c-0.4,0.4-0.4,1.1,0,1.6l5.2,5.5H1.1C0.5,8.9,0,9.3,0,10V12  c0,0.6,0.5,1.1,1.1,1.1h13.5l-5.2,5.5c-0.4,0.4-0.4,1.1,0,1.6l1.4,1.5c0.4,0.4,1.1,0.4,1.5,0l9.4-9.9c0.4-0.4,0.4-1.1,0-1.6L19.5,8z  "/>
                </svg>
            </a>
           </div>
          </section>
          <section class="of-section-page-develop">
              <h1 class="of-heading of-heading--md">Develop in Go, Ansible, or Helm</h1>
            <div class="of-section-page-intro__items">
              <div class="of-section-page-intro__item of-section-page-intro__item__build">
                  <h3 class="of-heading of-heading--lg">Go</h3>
                  <div class="of-section-page-intro__item__content">
                  <ol>
                    <li>Create a new operator project using the SDK Command Line Interface (CLI)</li>
                    <li>Define new resource APIs by adding Custom Resource Definitions (CRD)</li>
                    <li>Define Controllers to watch and reconcile resources</li>
                    <li>Write the reconciling logic for your Controller using the SDK and controller-runtime APIs</li>
                    <li>Use the SDK CLI to build and generate the operator deployment manifests</li>
                  </ol>
           
                  <a href="/docs/building-operators/golang/quickstart/" class="of-button of-button--tertiary">
                    Develop with Go
                  <svg class="of-button__icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="22px"
                  height="22px" viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
                  <path  d="M19.5,8l-7.3-7.6c-0.4-0.4-1.1-0.4-1.5,0L9.3,1.8c-0.4,0.4-0.4,1.1,0,1.6l5.2,5.5H1.1C0.5,8.9,0,9.3,0,10V12  c0,0.6,0.5,1.1,1.1,1.1h13.5l-5.2,5.5c-0.4,0.4-0.4,1.1,0,1.6l1.4,1.5c0.4,0.4,1.1,0.4,1.5,0l9.4-9.9c0.4-0.4,0.4-1.1,0-1.6L19.5,8z  "/>
                  </svg>
                </a>  
                </div>
              </div>
              <div class="of-section-page-intro__item of-section-page-intro__item__manage">
                  <h3 class="of-heading of-heading--lg">Ansible</h3>
                  <div class="of-section-page-intro__item__content">
                    <ol>
                      <li>Create a new operator project using the SDK Command Line Interface (CLI)</li>
                      <li>Write the reconciling logic for your object using ansible playbooks and roles</li>
                      <li>Use the SDK CLI to build and generate the operator deployment manifests</li>
                      <li>Optionally add additional CRD's using the SDK CLI and repeat steps 2 and 3</li>
                    </ol>	
                <a href="/docs/building-operators/ansible/quickstart/" class="of-button of-button--tertiary">
                  Develop with Ansible
                  <svg class="of-button__icon" enable-background="new 0 0 22 22" version="1.1" viewBox="0 0 22 22" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
                  <path d="M19.5,8l-7.3-7.6c-0.4-0.4-1.1-0.4-1.5,0L9.3,1.8c-0.4,0.4-0.4,1.1,0,1.6l5.2,5.5H1.1C0.5,8.9,0,9.3,0,10V12  c0,0.6,0.5,1.1,1.1,1.1h13.5l-5.2,5.5c-0.4,0.4-0.4,1.1,0,1.6l1.4,1.5c0.4,0.4,1.1,0.4,1.5,0l9.4-9.9c0.4-0.4,0.4-1.1,0-1.6L19.5,8z  "/>
                  </svg>
                </a>
                </div>
              </div>
              <div class="of-section-page-intro__item of-section-page-intro__item__discover">
                  <h3 class="of-heading of-heading--lg">Helm</h3>
                  <div class="of-section-page-intro__item__content">
                  <ol>
                    <li>Create a new operator project using the SDK Command Line Interface (CLI)</li>
                    <li>Create a new (or add your existing) Helm chart for use by the operator’s reconciling logic</li>
                    <li>Use the SDK CLI to build and generate the operator deployment manifests</li>
                    <li>Optionally add additional CRD’s using the SDK CLI and repeat steps 2 and 3</li>
                  </ol>	
                    <a href="/docs/building-operators/helm/quickstart/" class="of-button of-button--tertiary">
                  Develop with Helm
                  <svg class="of-button__icon" enable-background="new 0 0 22 22" version="1.1" viewBox="0 0 22 22" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
                  <path d="M19.5,8l-7.3-7.6c-0.4-0.4-1.1-0.4-1.5,0L9.3,1.8c-0.4,0.4-0.4,1.1,0,1.6l5.2,5.5H1.1C0.5,8.9,0,9.3,0,10V12  c0,0.6,0.5,1.1,1.1,1.1h13.5l-5.2,5.5c-0.4,0.4-0.4,1.1,0,1.6l1.4,1.5c0.4,0.4,1.1,0.4,1.5,0l9.4-9.9c0.4-0.4,0.4-1.1,0-1.6L19.5,8z  "/>
                  </svg>
                </a>  
                </div>
              </div>
            </div>
          </section>
          <section class="of-section of-section__contribute">
            <header class="of-section__contribute__header">
              <h2 class="of-heading of-heading--lg">Contribute!</h2>
              <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="26px"
        height="18px" viewBox="0 0 26 18" style="enable-background:new 0 0 26 18;" xml:space="preserve">
        <style type="text/css">
        .st3{fill:#002032;}
        </style>
        <path class="st3" d="M14.9,11.5l11-9C25.8,1.1,24.6,0,23.2,0H2.8C1.4,0,0.2,1.1,0,2.5l11,9C12.2,12.4,13.8,12.4,14.9,11.5z"/>
        <path class="st3" d="M15.9,12.6c-0.8,0.7-1.8,1-2.9,1s-2-0.3-2.9-1L0,4.4v10.8C0,16.7,1.3,18,2.8,18h20.3c1.6,0,2.8-1.3,2.8-2.8
         V4.4L15.9,12.6z"/>
        </svg>
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="25px"
           height="25px" viewBox="0 0 25 25" style="enable-background:new 0 0 25 25;" xml:space="preserve">
        <style type="text/css">
          .st2{fill-rule:evenodd;clip-rule:evenodd;fill:#002032;}
        </style>
        <path class="st2" d="M12.5,0C5.6,0,0,5.7,0,12.8C0,18.5,3.6,23.3,8.5,25c0.6,0.1,0.9-0.3,0.9-0.6c0-0.3,0-1.3,0-2.4
          c-3.1,0.6-4-0.8-4.2-1.5C5,20.1,4.4,19,3.9,18.7c-0.4-0.2-1.1-0.8,0-0.8c1,0,1.7,0.9,1.9,1.3c1.1,1.9,2.9,1.4,3.6,1.1
          c0.1-0.8,0.4-1.4,0.8-1.7c-2.8-0.3-5.7-1.4-5.7-6.3c0-1.4,0.5-2.5,1.3-3.4C5.7,8.4,5.3,7.1,6,5.3c0,0,1-0.3,3.4,1.3
          c1-0.3,2.1-0.4,3.1-0.4c1.1,0,2.1,0.1,3.1,0.4C18,5,19.1,5.3,19.1,5.3c0.7,1.8,0.2,3.1,0.1,3.4c0.8,0.9,1.3,2,1.3,3.4
          c0,4.9-2.9,6-5.7,6.3c0.5,0.4,0.8,1.2,0.8,2.4c0,1.7,0,3.1,0,3.5c0,0.3,0.2,0.7,0.9,0.6c4.9-1.7,8.5-6.5,8.5-12.2
          C25,5.7,19.4,0,12.5,0z"/>
        </svg>
            </header>
            
            <p class="of-section__contribute__content">The Operator SDK and its components are open source, so please feel encouraged to jump into each individually and learn what else you can do. If you want to discuss your experience, have questions, or want to get involved, join the <a href="https://groups.google.com/forum/#!forum/operator-framework" class="of-link of-link--inline">Operator SDK forum</a> and visit us on <a href="https://github.com/operator-framework/operator-sdk" class="of-link of-link--inline">GitHub</a>.</p>
          </section>
      </main>
      {{ partial "footer.html" . }}
    {{ partialCached "scripts.html" . }}
  </body>
</html>
